function Foo() {
    getName = function() {console.log(1)};
    return this;
}
Foo.getName = function() {console.log(2)};
Foo.prototype.getName = function() {console.log(2)};
var getName = function() {console.log(4)};
function getName() {console.log(5)};// 提升后被 声明的覆盖，只看声明的就好

Foo.getName();
getName();
Foo().getName();
getName();
new Foo.getName();
new Foo().getName();
new new Foo().getName(); 